package cn.kgc.springbootdemo.config.dingding;

import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import lombok.Data;

import java.util.List;

/**
 * <h3>springbootdemo</h3>
 * <p>钉钉发送群消息通知类</p>
 *
 * @author : DongZeJian
 * @date : 2021-01-29 23:31
 **/
@Data
public class DingDingNoticeTextEntity {

    /**
     * 此消息类型为固定text
     */
    private String msgType;
    /**
     * 消息内容
     */
    private DingDingMessageEntity dingDingMessageEntity;
    /**
     * 是否at所有人
     */
    private Boolean isAtAll;
    /**
     * 被@人的手机号(在content里添加@人的手机号)
     */
    private List<String> atMobiles;


    /**
     * 过去发送消息类型
     *
     * @return
     */
    public String getMsgType() {
        return "text";
    }

    /**
     * 获取发送警告消息
     *
     * @return
     */
    public JSONObject getText() {
        //定义返回Json
        JSONObject content = new JSONObject();
        content.put("content", this.getDingDingMessageEntity().toString());
        return content;
    }

    /**
     * 将entity实体对象转为JSON字符串
     *
     * @return 返回json字符串
     */
    public String getJSONObjectString() {
        JSONObject atMobile = new JSONObject();

        List<String> mobiles = Lists.newArrayList();
        if (CollUtil.isNotEmpty(this.getAtMobiles())){
            for (String s : this.getAtMobiles()) {
                mobiles.add(s);
            }
        }

        if (CollUtil.isNotEmpty(mobiles)) {
            atMobile.put("atMobiles", mobiles);
        }
        atMobile.put("isAtAll", this.getIsAtAll());

        //发送钉钉json入参报文
        JSONObject json = new JSONObject();
        json.put("msgtype", this.getMsgType());
        json.put("text", this.getText());
        json.put("at", atMobile);
        return json.toJSONString();
    }
}
